package cn.dengta.webapp.risk.bean;

import java.io.Serializable;

import cn.dengta.webapp.risk.dto.ZegoParam;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

@Getter
@Setter
public class RiskVideo extends RiskBase {

	/**
	 * 视频截帧识别类型：
	 * POLITICS：涉政识别
	 * PERSON：涉政人物识别
	 * VIOLENCE：暴恐识别
	 * PORN：色情识别
	 * AD：广告识别
	 * LOGO：视频水印 logo 识别
	 * BEHAVIOR：不良场景识别，支持吸烟、喝酒、 赌博、吸毒和无意义画面
	 * STAR: 公众人物识别
	 * BUSINESSRISK：行业违规识别
	 */
	private String imgType;

	/**
	 * 视频中的音频识别类型：
	 * POLITICAL：涉政识别
	 * PORN：色情识别
	 * AD：广告识别
	 * MOAN：娇喘识别
	 * SING：唱歌识别
	 * LANGUAGE：语种识别
	 * NONE：不识别
	 */
	private String audioType;

	/** 回调地址视频回调地址 */
	private String imgCallback;

	/** 音频回调地址 */
	private String audioCallback;

	/** 视频唯一标识，用于查询识别结果，最长64位 **/
	private String btId;

	/** 回调 http 或 https 接口，当该字段非空时，服务将根据该字段回调通知用户审核结果 **/
	private String callback;

	/** 回调透传字段，当 callback 存在时可选，发送回调请求时服务将该字段内容同视频结果一起返回 **/
	private CallbackParam callbackParam;

	private final VideoData data;

	public RiskVideo() {
		init();
		this.imgType = "POLITY_EROTIC_VIOLENT_ADVERT_QRCODE";
		this.audioType = "MOAN";
		this.data = new VideoData();
		this.callbackParam = new CallbackParam();
	}

	@Getter
	@Setter
	@Accessors(chain = true)
	public static class VideoData extends AbstractRiskData {

		/** 要检测的视频url **/
		private String url;

		/**
		 * 审核模式:
		 * AGORA：声网审核模式
		 * NORMAL：普通流地址，目前仅支持 rtmp 协 议；
		 */
		private String streamType;

		/** 流名称 (后台展示用) */
		private String streamName;

		/** 声网频道参数 */
		private ZegoParam agoraParam;

		@Override
		protected void setBody(String body) {
			setUrl(body);
		}

	}

	@Getter
	@Setter
	public static class CallbackParam implements Serializable {

		/** 审核ID，数美回调会透传过来 **/
		private Long verifyId;

	}

}
